/** Fonctions communes **/

/** Variable globale **/
var tableauValeurs = [];

/** Activer les info-bulles bootstrap **/
$(document).tooltip();

/** Mise en forme de la classe combobox grâce au plugin select2 **/
$(".combobox").select2({
	width: '88%',
});

/** Fonction générique pour supprimer les spans d'erreur **/
cleanAjout = function(cible){
	$("#controleAjout"+cible).removeClass("error");
	$("#controleAjout"+cible+" .help-inline").remove();
};

/** Fonction générique pour ajouter les spans d'erreur **/
erreurAjout = function(cible, erreur){
	cleanAjout(cible);
	$("#controleAjout"+cible).addClass("error");
	span = jQuery("<span>",{
		'class':"help-inline",
		'text': erreur
	});
	$("#controleAjout"+cible).append(span);
};

/** Fonction générique pour supprimer les spans d'avertissement **/
cleanAjoutWarning = function(cible){
	$("#controleAjout"+cible).removeClass("warning");
	$("#controleAjout"+cible+" .help-inline").remove();
};

/** Fonction générique pour ajouter les spans d'avertissement **/
warningAjout = function(cible, erreur){
	cleanAjoutWarning(cible);
	$("#controleAjout"+cible).addClass("warning");
	span = jQuery("<span>",{
		'class':"help-inline",
		'text': erreur
	});
	$("#controleAjout"+cible).append(span);
};

/** Fonction générique pour supprimer les spans d'erreur pour la suppression **/
cleanSuppression = function(cible){
	$("#controleSuppression"+cible).removeClass("error");
	$("#controleSuppression"+cible+" .help-inline").remove();
};

/** Fonction générique pour ajouter les spans d'erreur pour la suppression **/
erreurSuppression = function(cible, erreur){
	cleanSuppression(cible);
	$("#controleSuppression"+cible).addClass("error");
	span = jQuery("<span>",{
		'class':"help-inline",
		'text': erreur
	});
	$("#controleSuppression"+cible).append(span);
};

/** Lorsque le document est prêt, on affiche le contenu de la page de paramétrage des demandes **/
$(document).ready(function() {
	$("#pageParametrageDemandes").removeClass("hidden");
	initialisationTypesDemande();
});

/** Type demande **/

/** Fonction qui permet de récupérer les types de demande de la base de données **/
recupererTypesDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererTypesDemande.action",
		success : function(response) {
			$("#listeTypesDemande").append('<option value="" />');
			$.map( response.mapTypesDemande, function(val, id) {
				$("#listeTypesDemande").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet d'initialiser la section concernant les types de demande **/
initialisationTypesDemande = function(){
	$("#categorie").addClass("hidden");
	$("#sousCategorie").addClass("hidden");
	$("#CDDemande").addClass("hidden");
	$("#CDEtape").addClass("hidden");
	$("#CDPointControle").addClass("hidden");
	$("#CDParametreDemande").addClass("hidden");
	$("#CDParametreEtape").addClass("hidden");
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
};

/** Fonction permettant de vider la liste contenant les types de demande **/
cleanTypesDemandes = function(){
	$("#typeDemandeInput").val("");
	$("#listeTypesDemande").empty();
	$("#listeTypesDemande").select2("val", "");
};

$("#typeDemandeInput").keypress(function(){
	cleanAjout("TypeDemande");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau type de demande à la liste des types de demande **/
$("#ajouterTypeDemandeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterTypeDemandeForm.action",
		data : {
			typeDemande : $("#typeDemandeInput").val()
		},
		success : function(response) {
			if (response.erreur) {
				erreurAjout("TypeDemande", response.erreur);
			}
			else {
				$("#listeTypesDemande").append('<option value='+response.idTypeDemande+'>'+$("#typeDemandeInput").val()+'</option>');
				$("#typeDemandeInput").val("");
			}
		},
		error: function () {
			erreurAjout("TypeDemande", properties_error_typeDemande.innerHTML);
			$("#typeDemandeInput").val("");
		}
	});
	return false;
});

$('#modalTypeDemande .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerTypeDemandeForm.action",
		data : {
			idTypeDemande : $("#listeTypesDemande").val()
		},
		success : function() {
			cleanTypesDemandes();
			recupererTypesDemande();
			initialisationTypesDemande();
		}
	});
	$('#modalTypeDemande').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer le type de demande sélectionné à la liste des types de demande **/
$("#supprimerTypeDemandeForm").submit(function(){
	if (!$("#listeTypesDemande").val() == ""){
		$("#modalTypeDemande").modal('show');
	}
	else {
		erreurSuppression("TypeDemande", properties_error_suppr_typeDemande.innerHTML);
	}
	return false;
});

/** Fonction déclenchée lors du changement dans la sélection de la liste des types de demande **/
$("#listeTypesDemande").on("change", function(){
	cleanAjout("TypeDemande");
	cleanSuppression("TypeDemande");
	initialisationTypesDemande();
	$("#categorie").removeClass("hidden");	
	cleanCategories();
	recupererCategories();
});



/** Catégories **/

/** Fonction qui permet de récupérer les catégories de la base de données en fonction du type de demande sélectionné **/
recupererCategories = function(){
	$.ajax({
		type : "POST",
		url : "recupererCategories.action",
		data : {
			idTypeDemande : $("#listeTypesDemande").val(),
		},
		success : function(response) {
			$("#listeCategories").append('<option value="" />');
			$.map( response.mapCategories, function(val, id) {
				$("#listeCategories").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet d'initialiser la section concernant les catégories **/
initialisationCategories = function(){
	$("#sousCategorie").addClass("hidden");
	$("#CDDemande").addClass("hidden");
	$("#CDEtape").addClass("hidden");
	$("#CDPointControle").addClass("hidden");
	$("#CDParametreDemande").addClass("hidden");
	$("#CDParametreEtape").addClass("hidden");
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
};

/** Fonction permettant de vider la liste contenant les categories **/
cleanCategories = function(){
	cleanAjout("Categorie");
	cleanSuppression("Categorie");
	$("#categorieInput").val("");
	$("#listeCategories").empty();
	$("#listeCategories").select2("val", "");
};

/** Lorsqu'on complète l'input de catégorie, l'erreur est enlevée **/
$("#categorieInput").keypress(function(){
	cleanAjout("Categorie");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter une nouvelle catégorie à la liste des catégories **/
$("#ajouterCategorieForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCategorieForm.action",
		data : {
			idTypeDemande : $("#listeTypesDemande").val(),
			categorie : $("#categorieInput").val()
		},
		success : function(response) {
			if (response.erreur) {
				erreurAjout("Categorie", response.erreur);
			}
			else {
				$("#listeCategories").append('<option value='+response.idCategorie+'>'+$("#categorieInput").val()+'</option>');
				$("#categorieInput").val("");
			}
		},
		error : function(){
			erreurAjout("Categorie", properties_error_categorie.innerHTML);
			$("#categorieInput").val("");
		}
	});
	return false;
});


/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCategorie .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCategorieForm.action",
		data : {
			idCategorie : $("#listeCategories").val()
		},
		success : function() {
			cleanCategories();
			recupererCategories();
			initialisationCategories();
		}
	});
	$('#modalCategorie').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer la catégorie sélectionnée à la liste des catégories **/
$("#supprimerCategorieForm").submit(function(){
	if (!$("#listeCategories").val() == ""){
		$("#modalCategorie").modal('show');
	}
	else {
		erreurSuppression("Categorie", properties_error_suppr_categorie.innerHTML);
	}
	return false;
});

/** Fonction déclenchée lors du changement dans la sélection de la liste des catégories **/
$("#listeCategories").on("change", function(){
	cleanSuppression("Categorie");
	initialisationCategories();
	$("#sousCategorie").removeClass("hidden");
	recupererSousCategories();
	cleanSousCategories();
});




/** Sous-catégories **/

/** Fonction qui permet de récupérer les sous-catégories de la base de données en fonction de la catégorie sélectionnée **/
recupererSousCategories = function(){
	$.ajax({
		type : "POST",
		url : "recupererSousCategories.action",
		data : {
			idCategorie : $("#listeCategories").val(),
		},
		success : function(response) {
			$("#listeSousCategories").append('<option value=""/>');
			$.map( response.mapSousCategories, function(val, id) {
				$("#listeSousCategories").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet d'initialiser la section concernant les sous-catégories **/
initialisationSousCategories = function(){
	$("#CDDemande").addClass("hidden");
	$("#CDEtape").addClass("hidden");
	$("#CDPointControle").addClass("hidden");
	$("#CDParametreDemande").addClass("hidden");
	$("#CDParametreEtape").addClass("hidden");
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
};

/** Fonction permettant de vider la liste contenant les sous-categories **/
cleanSousCategories = function(){
	cleanAjout("SousCategorie");
	cleanSuppression("SousCategorie");
	$("#sousCategorieInput").val("");
	$("#listeSousCategories").empty();
	$("#listeSousCategories").select2("val", "");
};

/** Evénement lorsqu'on complète l'input de sous-catégorie**/
$("#sousCategorieInput").keypress(function(){
	cleanAjout("SousCategorie");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter une nouvelle sous-catégorie à la liste des sous-catégories **/
$("#ajouterSousCategorieForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterSousCategorieForm.action",
		data : {
			idCategorie : $("#listeCategories").val(),
			sousCategorie : $("#sousCategorieInput").val()
		},
		success : function(response) {
			if (response.erreur) {
				erreurAjout("SousCategorie", response.erreur);
			}
			else {
				$("#listeSousCategories").append('<option value='+response.idSousCategorie+'>'+$("#sousCategorieInput").val()+'</option>');
				$("#sousCategorieInput").val("");
			}
		},
		error : function(){
			erreurAjout("SousCategorie", properties_error_sousCategorie.innerHTML);
			$("#sousCategorieInput").val("");
		}
	});
	return false;
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalSousCategorie .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerSousCategorieForm.action",
		data : {
			idSousCategorie : $("#listeSousCategories").val()
		},
		success : function() {
			cleanSousCategories();
			recupererSousCategories();
			initialisationSousCategories();
		}
	});
	$('#modalSousCategorie').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer la sous-catégorie sélectionnée à la liste des sous-catégories **/
$("#supprimerSousCategorieForm").submit(function(){
	if (!$("#listeSousCategories").val() == ""){
		$("#modalSousCategorie").modal('show');
	}
	else {
		erreurSuppression("SousCategorie", properties_error_suppr_sousCategorie.innerHTML);
	}
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des sous-catégories **/
$("#listeSousCategories").on("change", function(){
	cleanSuppression("SousCategorie");
	initialisationSousCategories();
	$("#CDDemande").removeClass("hidden");
	cleanCDDemandes();
	recupererCDDemandes();
});



/** CDDemandes **/

/** Fonction qui permet de récupérer les CDDemandes de la base de données en fonction de la sous-catégorie sélectionnée **/
recupererCDDemandes = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDDemandes.action",
		data : {
			idSousCategorie : $("#listeSousCategories").val(),
		},
		success : function(response) {
			$("#listeCDDemandes").append('<option value=""/>');
			$.map( response.mapCDDemandes, function(val, id) {
				$("#listeCDDemandes").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet d'initialiser la section concernant les CDDemandes **/
initialisationCDDemandes = function(){
	$("#CDEtape").addClass("hidden");
	$("#CDPointControle").addClass("hidden");
	$("#CDParametreDemande").addClass("hidden");
	$("#CDParametreEtape").addClass("hidden");
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
};

/** Fonction permettant de vider la liste contenant les CDdemandes **/
cleanCDDemandes = function(){
	cleanAjout("CDDemande");
	cleanSuppression("CDDemande");
	$("#CDDemandeInput").val("");
	$("#listeCDDemandes").empty();
	$("#listeCDDemandes").select2("val", "");
};

/** Evénement lorsqu'on complète l'input de cd demande**/
$("#CDDemandeInput").keypress(function(){
	cleanAjout("CDDemande");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter une nouvelle CDdemande à la liste des CDdemandes **/
$("#ajouterCDDemandeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCDDemandeForm.action",
		data : {
			idTypeDemande : $("#listeTypesDemande").val(),
			idSousCategorie : $("#listeSousCategories").val(),
			CDDemande : $("#CDDemandeInput").val()
		},
		success : function(response) {
			if (response.erreur) {
				erreurAjout("CDDemande", response.erreur);
			}
			else {
				$("#listeCDDemandes").append('<option value='+response.idCDDemande+'>'+$("#CDDemandeInput").val()+'</option>');
				$("#CDDemandeInput").val("");
			}
		},
		error : function(){
			erreurAjout("CDDemande", properties_error_CDDemande.innerHTML);
			$("#CDDemandeInput").val("");
		}
	});
	return false;
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDDemande .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDDemandeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function() {
			cleanCDDemandes();
			recupererCDDemandes();
			initialisationCDDemandes();
		}
	});
	$('#modalCDDemande').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer CDDemande sélectionnée à la liste des CDDemandes **/
$("#supprimerCDDemandeForm").submit(function(){
	if (!$("#listeCDDemandes").val() == ""){
		$("#modalCDDemande").modal('show');
	}
	else {
		erreurSuppression("CDDemande", properties_error_suppr_CDDemande.innerHTML);
	}
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des cd demandes **/
$("#listeCDDemandes").on("change", function(){
	cleanSuppression("CDDemande");
	$("#CDEtape").removeClass("hidden");
	$("#CDPointControle").removeClass("hidden");
	$("#CDParametreDemande").removeClass("hidden");
	initialisationCDEtapesPointsControleParamsDemande();
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
	cleanCDEtapes();
	cleanCDPointsControle();
	cleanCDParametresDemande();
	recupererToutesCDEtapes();
	recupererCDEtapes();
	recupererTousCDPointsControle();
	recupererCDPointsControle();
	recupererTousCDParametresDemande();
	recupererCDParametresDemande();
});



/** CDEtapes **/

/** Fonction qui permet de récupérer les étapes CD de la base de données en fonction de la demande sélectionnée **/
recupererCDEtapes = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDEtapes.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
		},
		success : function(response) {
			$("#listeCDEtapes").append('<option value=""/>');
			$.map( response.mapCDEtapes, function(val, id) {
				$("#listeCDEtapes").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet de récupérer toutes les étapes CD qui ne sont pas encore affectées à la demande **/
recupererToutesCDEtapes = function(){
	$.ajax({
		type : "POST",
		url : "recupererToutesCDEtapes.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#toutesCDEtapes").append('<option value=""/>');
			$.map( response.mapCDEtapes, function(val, id) {
				$("#toutesCDEtapes").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Evénement lorsqu'on change la sélection de la liste des cd étapes existantes **/
$("#toutesCDEtapes").on("change", function(){
	$.ajax({
		type : "POST",
		url : "ajouterSelectionCDEtapeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDEtape : $("#toutesCDEtapes").val()
		},
		success : function(response) {
			$("#listeCDEtapes").append('<option value='+$("#toutesCDEtapes").val()+'>'+response.CDEtape+'</option>');
			$("#toutesCDEtapes").empty();
			$("#toutesCDEtapes").select2("val", "");
			recupererToutesCDEtapes();
		}
	});
});

/** Fonction qui permet d'initialiser les sections concernant les étapes CD, les points de contrôle et les paramètres de la demande **/
initialisationCDEtapesPointsControleParamsDemande = function(){
	$("#CDParametreEtape").addClass("hidden");
	$("#CPParametreEtape").addClass("hidden");
	$("#correspondanceParametres").addClass("hidden");
};

/** Fonction permettant de vider la liste contenant les étapes **/
cleanCDEtapes = function(){
	cleanAjout("CDEtape");
	cleanAjoutWarning("CDEtapeDescription");
	cleanAjout("CDEtapeModifDescription");
	cleanSuppression("CDEtape");
	$("#modifierDescriptionCDEtapeForm").addClass("hidden");
	$("#CDEtapeInput").val("");
	$("#CDEtapeDescriptionInput").val("");
	$("#toutesCDEtapes").empty();
	$("#toutesCDEtapes").select2("val", "");
	$("#listeCDEtapes").empty();
	$("#listeCDEtapes").select2("val", "");
	$("#descripSelectCDEtapeInput").val("");
};

/** Evénement lorsqu'on complète l'input de cd étape**/
$("#CDEtapeInput").keypress(function(){
	cleanAjout("CDEtape");
});

/** Evénement lorsqu'on complète l'input de description de cd étape**/
$("#CDEtapeDescriptionInput").keypress(function(){
	cleanAjoutWarning("CDEtapeDescription");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter une nouvelle CDEtape à la liste des CDEtapes **/
$("#ajouterCDEtapeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCDEtapeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			CDEtape : $("#CDEtapeInput").val(),
			descriptionCDEtape : $("#CDEtapeDescriptionInput").val()
		},
		success : function(response) {
			if (response.erreur) {
				erreurAjout("CDEtape", response.erreur);
				if (response.erreur2) {
					warningAjout("CDEtapeDescription", response.erreur2);
				}
			}
			else {
				$("#listeCDEtapes").append('<option value='+response.idCDEtape+'>'+$("#CDEtapeInput").val()+'</option>');
				$("#CDEtapeInput").val("");
				$("#CDEtapeDescriptionInput").val("");
			}
		},
		error : function(){
			erreurAjout("CDEtape", properties_error_CDEtape.innerHTML);
			$("#CDEtapeInput").val("");
			$("#CDEtapeDescriptionInput").val("");
		}
	});
	return false;
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDEtape .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function() {
			cleanCDEtapes();
			recupererCDEtapes();
			recupererToutesCDEtapes();
			initialisationCDEtapesPointsControleParamsDemande();
			$("#correspondanceParametres").addClass("hidden");
		}
	});
	$('#modalCDEtape').modal('hide');
});

/** Evénement appelé lors du clic sur le bouton supprimer définitivement du modal **/
$('#modalCDEtape .suppr-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerDefinitivementCDEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val()
		},
		success : function() {
			cleanCDEtapes();
			recupererCDEtapes();
			recupererToutesCDEtapes();
			initialisationCDEtapesPointsControleParamsDemande();
			$("#correspondanceParametres").addClass("hidden");
		}
	});
	$('#modalCDEtape').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer l'étape sélectionnée à la liste des étapes **/
$("#supprimerCDEtapeForm").submit(function(){
	if (!$("#listeCDEtapes").val() == ""){
		$("#modalCDEtape").modal('show');
	}
	else {
		erreurSuppression("CDEtape", properties_error_suppr_CDEtape.innerHTML);
	}
	return false;
});

/** Fonction qui permet de récupérer la descrption de l'étape CD **/
recupererDescriptionCDEtape = function(){
	$.ajax({
		type : "POST",
		url : "recupererDescriptionCDEtape.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val()
		},
		success : function(response) {
			$("#descripSelectCDEtapeInput").val(response.descriptionCDEtape);
		},
	});
	return false;
};

/** Evénement lors de la modification de la description d'une cd étape **/
$("#modifierDescriptionCDEtapeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "modifierDescriptionCDEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			descriptionCDEtape : $("#descripSelectCDEtapeInput").val()
		},
		success : function(response) {
			if (response.erreur){
				erreurAjout("CDEtapeModifDescription", response.erreur);
			}			
		},
	});
	return false;
});

/** Evénement lorsqu'on complète l'input de description de l'étape sélectionnée **/
$("#descripSelectCDEtapeInput").keypress(function(){
	cleanAjout("CDEtapeModifDescription");
});

/** Evénement lorsqu'on change la sélection de la liste des cd étapes **/
$("#listeCDEtapes").on("change", function(){
	$("#modifierDescriptionCDEtapeForm").removeClass("hidden");
	cleanSuppression("CDEtape");
	recupererDescriptionCDEtape();
	cleanCDParametresEtape();
	$("#CDParametreEtape").removeClass("hidden");
	recupererCDParametresEtape();
	recupererTousCDParametresEtape();
	if(!$("#CDParametreDemande").hasClass("hidden") && !$("#CDParametreEtape").hasClass("hidden")){
		$("#correspondanceParametres").removeClass("hidden");
		cleanCorrespondancesParametres();
	}
});




/** Points de contrôle **/

/** Fonction qui permet de récupérer lesCDPointsDEControle de la base de données en fonction de la demande sélectionnée **/
recupererCDPointsControle = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDPointsControle.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#listeCDPointsControle").empty();
			$("#listeCDPointsControle").select2("val", "");
			$("#listeCDPointsControle").append('<option value=""/>');
			for(var i=0; i<response.listeIdCDPointsControle.length; i++){
				$("#listeCDPointsControle").append('<option value='+ response.listeIdCDPointsControle[i] +'>'+ response.listeNomsCDPointsControle[i] +'</option>');
			}
		},
	});
	return false;
};

/** Fonction qui permet de récupérer tous les CDPointsDeControle qui ne sont pas encore affectés à la demande **/
recupererTousCDPointsControle = function(){
	$.ajax({
		type : "POST",
		url : "recupererTousCDPointsControle.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#tousCDPointsControle").append('<option value=""/>');
			$.map( response.mapCDPointsControle, function(val, id) {
				$("#tousCDPointsControle").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Evénement lorsqu'on change la sélection de la liste des cd points de contrôle existant **/
$("#tousCDPointsControle").on("change", function(){
	$.ajax({
		type : "POST",
		url : "ajouterSelectionCDPointControleForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDPointControle : $("#tousCDPointsControle").val()
		},
		success : function(response) {
			$("#listeCDPointsControle").append('<option value='+$("#tousCDPointsControle").val()+'>'+response.CDPointControle+'</option>');
			$("#tousCDPointsControle").empty();
			$("#tousCDPointsControle").select2("val", "");
			recupererTousCDPointsControle();
		}
	});
});

/** Fonction permettant de vider la liste contenant les CDPointsDeControle **/
cleanCDPointsControle = function(){
	cleanAjout("CDPointControle");
	cleanAjout("CDPointControleTypeSaisie");
	cleanSuppression("CDPointControle");
	cleanAjout("CDPointControleModifNumero");
	$("#CDPointControleInput").val("");
	$('input[type=radio][name=choixTypeSaisie]').attr('checked', false);
	$("#modifierCDPointControleNumeroInput").val("");
	$("#modifierCDPointControleForm").addClass("hidden");
	$("#tousCDPointsControle").empty();
	$("#tousCDPointsControle").select2("val", "");
	$("#listeCDPointsControle").empty();
	$("#listeCDPointsControle").select2("val", "");
};

/** Evénement lorsqu'on complète l'input de cd point de contrôle**/
$("#CDPointControleInput").keypress(function(){
	cleanAjout("CDPointControle");
});

/** Evénement lorsqu'on sélectionne une option du bouton radio **/
$('input[type=radio][name=choixTypeSaisie]').on("click", function(){
	cleanAjout("CDPointControleTypeSaisie");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau CDPointDeControle à la liste des CDPointDeControles **/
$("#ajouterCDPointControleForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCDPointControleForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			CDPointControle : $("#CDPointControleInput").val(),
			typeSaisieCDPointControle : $('input[type=radio][name=choixTypeSaisie]:checked').val()
		},
		success : function(response) {
			if (response.erreur || response.erreur2) {
				if (response.erreur){
					erreurAjout("CDPointControle", response.erreur);
				}
				if (response.erreur2) {
					erreurAjout("CDPointControleTypeSaisie", response.erreur2);
				}
			}
			else {
				$("#listeCDPointsControle").append('<option value='+response.idCDPointControle+'>'+$("#CDPointControleInput").val()+'</option>');
				$("#CDPointControleInput").val("");
				$('input[type=radio][name=choixTypeSaisie]').attr('checked', false);
			}
		},
		error : function(){
			erreurAjout("CDPointControle", properties_error_CDPointControle.innerHTML);
			$("#CDPointControleInput").val("");
		}
	});
	return false;
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDPointControle .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDPointControleForm.action",
		data : {
			idCDPointControle : $("#listeCDPointsControle").val(),
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function() {
			cleanCDPointsControle();
			recupererCDPointsControle();
			recupererTousCDPointsControle();
		}
	});
	$('#modalCDPointControle').modal('hide');
});

/** Evénement appelé lors du clic sur le bouton supprimer définitivement du modal **/
$('#modalCDPointControle .suppr-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerDefinitivementCDPointControleForm.action",
		data : {
			idCDPointControle : $("#listeCDPointsControle").val()
		},
		success : function() {
			cleanCDPointsControle();
			recupererCDPointsControle();
			recupererTousCDPointsControle();
		}
	});
	$('#modalCDPointControle').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer le CDPointDeControle sélectionné à la liste des CDPoints de controle **/
$("#supprimerCDPointControleForm").submit(function(){
	if (!$("#listeCDPointsControle").val() == ""){
		$("#modalCDPointControle").modal('show');
	}
	else {
		erreurSuppression("CDPointControle", properties_error_suppr_CDPointControle.innerHTML);
	}
	return false;
});

/** Fonction pour récupérer le numéro d'un point de contrôle d'une demande **/
recupererNumeroCDPointControle = function(){
	$.ajax({
		type : "POST",
		url : "recupererNumeroCDPointControle.action",
		data : {
			idCDPointControle : $("#listeCDPointsControle").val(),
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#modifierCDPointControleNumeroInput").val(response.numeroCDPointControle);
		},
		error : function() {
			erreurAjout("CDPointControleModifNumero", properties_error_modif_CDPointControle.innerHTML);
		}
	});
	return false;
};

/** Fonction pour modifier le numéro d'un point de contrôle d'une demande **/
$("#modifierCDPointControleForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "modifierCDPointControleForm.action",
		data : {
			idCDPointControle : $("#listeCDPointsControle").val(),
			idCDDemande : $("#listeCDDemandes").val(),
			numeroEnvoyeCDPointControle : $("#modifierCDPointControleNumeroInput").val()
		},
		success : function(response) {
			if(response.erreur){
				erreurAjout("CDPointControleModifNumero", response.erreur);
			}
			else {
				$("#modifierCDPointControleNumeroInput").val("");
				$("#modifierCDPointControleForm").addClass("hidden");
				recupererCDPointsControle();
			}
		},
		error : function() {
			erreurAjout("CDPointControleModifNumero", properties_error_modif_CDPointControle);
		}
	});
	return false;
});

/** Vérification qu'il n'y a que des chiffres saisis dans l'input **/
$("#modifierCDPointControleNumeroInput").keypress(function (e) {
	cleanAjout("CDPointControleModifNumero");
	if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
		erreurAjout("CDPointControleModifNumero", properties_warning_num.innerHTML);
		return false;
	}
});

/** Evénement lors du changement de la sélection du CDPointDeControle **/
$("#listeCDPointsControle").on("change", function(){
	cleanSuppression("CDPointControle");
	cleanAjout("CDPointControleModifNumero");
	$("#modifierCDPointControleForm").removeClass("hidden");
	$("#modifierCDPointControleNumeroInput").val("");
	recupererNumeroCDPointControle();
});



/** Paramètres de demande **/

/** Fonction qui permet de récupérer les CDParametresDemande de la base de données en fonction de la demande sélectionnée **/
recupererCDParametresDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDParametresDemande.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#listeCDParametresDemande").append('<option value=""/>');
			$.map( response.mapCDParametresDemande, function(val, id) {
				$("#listeCDParametresDemande").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet de récupérer tous les CDParametresDemande qui ne sont pas encore affectés à la demande **/
recupererTousCDParametresDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererTousCDParametresDemande.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function(response) {
			$("#tousCDParametresDemande").append('<option value=""/>');
			$.map(response.mapCDParametresDemande, function(val, id) {
				$("#tousCDParametresDemande").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Evénement lorsqu'on valide le formulaire d'ajout d'un CD Parametre Demande Existant **/
$("#ajouterCDParametreDemandeExistantForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterSelectionCDParametreDemandeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDParametreDemande : $("#tousCDParametresDemande").val(),
			obligatoireCDParametreDemande : $('input[type=radio][name=choixObligatoireParametreDemandeExistant]:checked').val(),
			descriptionCDParametreDemande : $("#CDParametreDemandeExistantDescriptionInput").val()
		},
		success : function(response) {
			$("#listeCDParametresDemande").append('<option value='+$("#tousCDParametresDemande").val()+'>'+response.CDParametreDemande+'</option>');
			$("#tousCDParametresDemande").empty();
			$("#tousCDParametresDemande").select2("val", "");
			recupererTousCDParametresDemande();
			$('input[type=radio][name=choixObligatoireParametreDemandeExistant][value=Obligatoire]').attr('checked', true);
			$("#CDParametreDemandeExistantDescriptionInput").val("");
			if(!$("#CDParametreEtape").hasClass("hidden")){
				cleanCorrespondancesParametres();
			}
		}
	});
	return false;
});

/** Fonction permettant de vider la liste contenant les étapes **/
cleanCDParametresDemande = function(){
	cleanAjout("CDParametreDemande");
	cleanAjout("CDParametreDemandeTypeSaisie");
	cleanAjoutWarning("CDParametreDemandeDescription");
	cleanAjout("CDParametreDemandeTypeSaisie");
	cleanAjout("CDParametreDemandeModifDescription");
	cleanSuppression("CDParametreDemande");
	$("#modifierDescriptionCDParametreDemandeForm").addClass("hidden");
	$("#CDParametreDemandeValeurs").addClass("hidden");
	$("#CDParametreDemandeInput").val("");
	$("#CDParametreDemandeDescriptionInput").val("");
	$('#choixTypeSaisieParametreDemande').val(-1);
	$("#descripSelectCDParametreDemandeInput").val("");
	$("#tousCDParametresDemande").empty();
	$("#tousCDParametresDemande").select2("val", "");
	$("#listeCDParametresDemande").empty();
	$("#listeCDParametresDemande").select2("val", "");
};

/** Evénement lorsqu'on complète l'input de cd paramètre demande **/
$("#CDParametreDemandeInput").keypress(function(){
	cleanAjout("CDParametreDemande");
});

/** Evénement lorsqu'on sélectionne une option du bouton radio **/
$('input[type=radio][name=choixTypeSaisieParametreDemande]').on("click", function(){
	cleanAjout("CDParametreDemandeTypeSaisie");
});

/** Evénement lorsqu'on complète l'input de description du cd paramètre demande **/
$("#CDParametreDemandeDescriptionInput").keypress(function(){
	cleanAjoutWarning("CDParametreDemandeDescription");
});

/** Evénement lorsqu'on change la sélection du type de saisie du cd paramètre demande **/
$('#choixTypeSaisieParametreDemande').on("change", function(){
	cleanAjout("CDParametreDemandeTypeSaisie");
	$("#CDParametreDemandeAjoutCDParametreDemandeValeurs").addClass("hidden");
	if($(this).val() === "Liste à sélection multiple" || $(this).val() === "Liste à sélection simple"){
		$("#CDParametreDemandeAjoutCDParametreDemandeValeurs").removeClass("hidden");
	}
});

$("#CDParametreDemandeCDParametreDemandeValeursInput").keypress(function(){
	cleanAjout("CDParametreDemandeCDParametreDemandeValeurs");
});

$('#validerAjoutValeurCDParametreDemandeExistant').on("click", function(){
	var test = true;
	for(var i = 0; i < tableauValeurs.length; i = i + 1){
		if (tableauValeurs[i] === $("#CDParametreDemandeCDParametreDemandeValeursInput").val()){
			erreurAjout("CDParametreDemandeCDParametreDemandeValeurs", properties_error_CDParametreDemandeValeurs.innerHTML);
			test = false;
		}
	}
	if (test === true){
	tableauValeurs.push($("#CDParametreDemandeCDParametreDemandeValeursInput").val());
	$("#listeCDParametreDemandeCDParametresDemandeValeurs").append('<option value='+$("#CDParametreDemandeCDParametreDemandeValeursInput").val()+'>'+$("#CDParametreDemandeCDParametreDemandeValeursInput").val()+'</option>');
	$("#CDParametreDemandeCDParametreDemandeValeursInput").val("");
	}
});

$('#boutonSupprimerListeTemporaire').on("click", function(){
	var tabTemp = [];	
	for(var i = 0; i < tableauValeurs.length; i = i + 1){
		if (tableauValeurs[i] != $("#listeCDParametreDemandeCDParametresDemandeValeurs").val()){
			tabTemp.push(tableauValeurs[i]);
		}
	}
	tableauValeurs = [];
	$("#listeCDParametreDemandeCDParametresDemandeValeurs").empty();
	$("#listeCDParametreDemandeCDParametresDemandeValeurs").select2("val", "");
	for(var i = 0; i < tabTemp.length; i = i + 1){
		tableauValeurs.push(tabTemp[i]);
		$("#listeCDParametreDemandeCDParametresDemandeValeurs").append('<option value='+tableauValeurs[i]+'>'+tableauValeurs[i]+'</option>');
	}
	return false;
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau CDParametreDemande à la liste des CDParametresDemande **/
$("#ajouterCDParametreDemandeForm").submit(function(){
	cleanAjout("CDParametreDemandeCDParametreDemandeValeurs");
	$.ajax({
		type : "POST",
		url : "ajouterCDParametreDemandeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			CDParametreDemande : $("#CDParametreDemandeInput").val(),
			obligatoireCDParametreDemande : $('input[type=radio][name=choixObligatoireParametreDemande]:checked').val(),
			typeSaisieCDParametreDemande : $('#choixTypeSaisieParametreDemande').val(),
			descriptionCDParametreDemande : $("#CDParametreDemandeDescriptionInput").val(),
			valeursCDParametreDemande : tableauValeurs.join( "[SEP-*/]" )
		},
		success : function(response) {
			if (response.erreur || response.erreur2) {
				if (response.erreur){
					erreurAjout("CDParametreDemande", response.erreur);
				}
				if (response.erreur2) {
					erreurAjout("CDParametreDemandeTypeSaisie", response.erreur2);
				}
				if (response.erreur3) {
					warningAjout("CDParametreDemandeDescription", response.erreur3);
				}
			}
			else {
				$("#CDParametreDemandeAjoutCDParametreDemandeValeurs").addClass("hidden");
				cleanAjoutWarning("CDParametreDemandeDescription");
				$("#listeCDParametresDemande").append('<option value='+response.idCDParametreDemande+'>'+$("#CDParametreDemandeInput").val()+'</option>');
				$("#CDParametreDemandeInput").val("");
				$('input[type=radio][name=choixObligatoireParametreDemande][value=Obligatoire]').attr('checked', true);
				$('#choixTypeSaisieParametreDemande').val(-1);
				$("#CDParametreDemandeDescriptionInput").val("");
				tableauValeurs = [];
				if(!$("#CDParametreEtape").hasClass("hidden")){
					cleanCorrespondancesParametres();
				}
			}
		},
		error : function(){
			erreurAjout("CDParametreDemande", properties_error_CDParametreDemande.innerHTML);
			$("#CDParametreDemandeInput").val("");
			$('#choixTypeSaisieParametreDemande').val("Selectionner un type de saisie");
		}
	});
	return false;
});

/** Fonction qui permet de récupérer la description de CDParametreDemande **/
recupererDescriptionCDParametreDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererDescriptionCDParametreDemande.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDParametreDemande : $("#listeCDParametresDemande").val()
		},
		success : function(response) {
			$("#descripSelectCDParametreDemandeInput").val(response.descriptionCDParametreDemande);
		},
	});
	return false;
};

/** Fonction qui permet de récupérer le type de saisie de CDParametreDemande **/
recupererTypeSaisieCDParametreDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererTypeSaisieCDParametreDemande.action",
		data : {
			idCDParametreDemande : $("#listeCDParametresDemande").val()
		},
		success : function(response) {
			if (response.typeSaisieCDParametreDemande == "select" || response.typeSaisieCDParametreDemande == "selectmultiple"){
				$("#CDParametreDemandeValeurs").removeClass("hidden");
			}
			else {
				if (!$("#CDParametreDemandeValeurs").hasClass("hidden")){
					$("#CDParametreDemandeValeurs").addClass("hidden");
				}
			}
		},
	});
	return false;
};

/** Evénement lorsqu'on valide le formulaire de modification de la description d'un cd paramètre demande **/
$("#modifierDescriptionCDParametreDemandeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "modifierDescriptionCDParametreDemandeForm.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDParametreDemande : $("#listeCDParametresDemande").val(),
			descriptionCDParametreDemande : $("#descripSelectCDParametreDemandeInput").val()
		},
		success : function(response) {
			if(response.erreur){
				erreurAjout("CDParametreDemandeModifDescription", response.erreur);
			}			
		}
	});
	return false;
});

/** Evénement lorsqu'on complète l'input de description du cd paramètre de demande sélectionné **/
$("#descripSelectCDParametreDemandeInput").keypress(function(){
	cleanAjout("CDParametreDemandeModifDescription");
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDParametreDemande .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDParametreDemandeForm.action",
		data : {
			idCDParametreDemande : $("#listeCDParametresDemande").val(),
			idCDDemande : $("#listeCDDemandes").val()
		},
		success : function() {
			cleanCDParametresDemande();
			recupererCDParametresDemande();
			recupererTousCDParametresDemande();
		}
	});
	$('#modalCDParametreDemande').modal('hide');
});

/** Evénement appelé lors du clic sur le bouton supprimer définitivement du modal **/
$('#modalCDParametreDemande .suppr-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerDefinitivementCDParametreDemandeForm.action",
		data : {
			idCDParametreDemande : $("#listeCDParametresDemande").val()
		},
		success : function() {
			cleanCDParametresDemande();
			recupererCDParametresDemande();
			recupererTousCDParametresDemande();
			if(!$("#CDParametreEtape").hasClass("hidden")){
				cleanCorrespondancesParametres();
			}
		}
	});
	$('#modalCDParametreDemande').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer le CDParametreDemande sélectionné à la liste des CDParametresDemande **/
$("#supprimerCDParametreDemandeForm").submit(function(){
	if (!$("#listeCDParametresDemande").val() == ""){
		$("#modalCDParametreDemande").modal('show');
	}
	else {
		erreurSuppression("CDParametreDemande", properties_error_suppr_CDParametreDemande.innerHTML);
	}
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres demande **/
$("#listeCDParametresDemande").on("change", function(){
	$("#modifierDescriptionCDParametreDemandeForm").removeClass("hidden");
	cleanSuppression("CDParametreDemande");
	recupererDescriptionCDParametreDemande();
	recupererTypeSaisieCDParametreDemande();
	cleanCDParametresDemandeValeurs();
	recupererCDParametresDemandeValeurs();
	if(!$("#CDParametreEtape").hasClass("hidden")){
		cleanCorrespondancesParametres();
	}
});



/** CDParametreDemandeValeurs **/

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau CDParametreDemandeValeurs à la liste des CDParametresDemande **/
$("#ajouterCDParametreDemandeValeursForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCDParametreDemandeValeursForm.action",
		data : {
			idCDParametreDemande : $("#listeCDParametresDemande").val(),
			CDParametreDemandeValeurs : $("#CDParametreDemandeValeursInput").val()
		},
		success : function(response) {
			if (response.erreur){
				erreurAjout("CDParametreDemandeValeurs", response.erreur);
			}
			else {
				$("#listeCDParametresDemandeValeurs").append('<option value='+response.idCDParametreDemandeValeurs+'>'+$("#CDParametreDemandeValeursInput").val()+'</option>');
				$("#CDParametreDemandeValeursInput").val("");
			}
		},
		error : function(){
			erreurAjout("CDParametreDemandeValeurs", properties_error_CDParametreDemandeValeurs.innerHTML);
			$("#CDParametreDemandeValeursInput").val("");
		}
	});
	return false;
});

/** Fonction qui permet de récupérer les CDParametresDemandeValeurs de la base de données en fonction du paramètre de demande sélectionnée **/
recupererCDParametresDemandeValeurs = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDParametresDemandeValeurs.action",
		data : {
			idCDParametreDemande : $("#listeCDParametresDemande").val()
		},
		success : function(response) {
			$("#listeCDParametresDemandeValeurs").append('<option value=""/>');
			$.map( response.mapCDParametresDemandeValeurs, function(val, id) {
				$("#listeCDParametresDemandeValeurs").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction permettant de vider la liste contenant les étapes **/
cleanCDParametresDemandeValeurs = function(){
	cleanAjout("CDParametreDemandeValeurs");
	cleanSuppression("CDParametreDemandeValeurs");
	$("#CDParametreDemandeValeursInput").val("");
	$("#listeCDParametresDemandeValeurs").empty();
	$("#listeCDParametresDemandeValeurs").select2("val", "");
};

/** Evénement lorsqu'on complète l'input de cd paramètre demande valeurs **/
$("#CDParametreDemandeValeursInput").keypress(function(){
	cleanAjout("CDParametreDemandeValeurs");
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDParametreDemandeValeurs .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDParametreDemandeValeursForm.action",
		data : {
			idCDParametreDemandeValeurs : $("#listeCDParametresDemandeValeurs").val(),
			idCDParametreDemande : $("#listeCDParametresDemande").val()
		},
		success : function() {
			cleanCDParametresDemandeValeurs();
			recupererCDParametresDemandeValeurs();
			initialisationCDEtapesPointsControleParamsDemande();
			cleanCorrespondancesParametres();
		}
	});
	$('#modalCDParametreDemandeValeurs').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer le CDParametreDemandeValeurs sélectionné à la liste des CDParametresDemandeValeurs **/
$("#supprimerCDParametreDemandeValeursForm").submit(function(){
	if (!$("#listeCDParametresDemandeValeurs").val() == ""){
		$("#modalCDParametreDemandeValeurs").modal('show');
	}
	else {
		erreurSuppression("CDParametreDemandeValeurs", properties_error_suppr_CDParametreDemandeValeurs.innerHTML);
	}
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres demande valeurs **/
$("#listeCDParametresDemandeValeurs").on("change", function(){
	cleanSuppression("CDParametreDemandeValeurs");
});




/** CDParametresEtape **/

/** Fonction qui permet de récupérer les CDParametresEtape de la base de données en fonction de l'étape sélectionnée **/
recupererCDParametresEtape = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDParametresEtape.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
		},
		success : function(response) {
			$("#listeCDParametresEtape").append('<option value=""/>');
			$.map( response.mapCDParametresEtape, function(val, id) {
				$("#listeCDParametresEtape").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet de récupérer tous les ParametresEtape qui ne sont pas encore affectés à une étape **/
recupererTousCDParametresEtape = function(){
	$.ajax({
		type : "POST",
		url : "recupererTousCDParametresEtape.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val()
		},
		success : function(response) {
			$("#tousCDParametresEtape").append('<option value=""/>');
			$.map( response.mapCDParametresEtape, function(val, id) {
				$("#tousCDParametresEtape").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Evénement lors de la validation du formulaire d'ajout d'un cd paramètre étape existant **/
$("#ajouterCDParametreEtapeExistantForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterSelectionCDParametreEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			idCDParametreEtape : $("#tousCDParametresEtape").val(),
			valeurFixeCDParametreEtape : $("#CDParametreEtapeExistantValeurFixeInput").val()
		},
		success : function(response) {
			if(response.erreur){
				erreurAjout("CDParametreEtapeExistantValeurFixe", response.erreur);
			}
			else {
				$("#listeCDParametresEtape").append('<option value='+$("#tousCDParametresEtape").val()+'>'+response.CDParametreEtape+'</option>');
				$("#tousCDParametresEtape").empty();
				$("#tousCDParametresEtape").select2("val", "");
				$("#CDParametreEtapeExistantValeurFixeInput").val("");
				cleanAjout("CDParametreEtapeExistantValeurFixe");
				$("#divValeurFixeCDParametreEtapeExistant").addClass("hidden");
				recupererTousCDParametresEtape();
			}
		}
	});
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres étapes existant **/
$("#tousCDParametresEtape").on("change", function(){
	$("#divValeurFixeCDParametreEtapeExistant").addClass("hidden");
	$.ajax({
		type : "POST",
		url : "testerTypeSaisieCDParametreEtapeForm.action",
		data : {
			idCDParametreEtape : $("#tousCDParametresEtape").val()
		},
		success : function(response) {
			if(response.typeSaisieCDParametreEtape == "admin"){
				$("#divValeurFixeCDParametreEtapeExistant").removeClass("hidden");
			}
			else {
				$.ajax({
					type : "POST",
					url : "ajouterSelectionCDParametreEtapeForm.action",
					data : {
						idCDEtape : $("#listeCDEtapes").val(),
						idCDParametreEtape : $("#tousCDParametresEtape").val(),
						valeurFixeCDParametreEtape : ""
					},
					success : function(response) {
						$("#listeCDParametresEtape").append('<option value='+$("#tousCDParametresEtape").val()+'>'+response.CDParametreEtape+'</option>');
						$("#tousCDParametresEtape").empty();
						$("#tousCDParametresEtape").select2("val", "");
						recupererTousCDParametresEtape();
						cleanCorrespondancesParametres();
					}
				});
				return false;
			}
		}
	});
});

/** Fonction permettant de vider la liste contenant les étapes **/
cleanCDParametresEtape = function(){
	cleanAjout("CDParametreEtapeExistantValeurFixe");
	$("#divValeurFixeCDParametreEtapeExistant").addClass("hidden");
	cleanAjout("CDParametreEtape");
	cleanAjoutWarning("CDParametreEtapeDescription");
	cleanAjout("CDParametreEtapeValeurFixe");
	cleanAjout("CDParametreEtapeTypeSaisie");
	cleanAjoutWarning("CDParametreEtapeModifDescription");
	cleanAjout("CDParametreEtapeModifValeurFixe");
	cleanSuppression("CDParametreEtape");
	$("#modifierCDParametreEtapeForm").addClass("hidden");
	$("#CDParametreEtapeInput").val("");
	$("#CDParametreEtapeDescriptionInput").val("");
	$("#tousCDParametresEtape").empty();
	$("#tousCDParametresEtape").select2("val", "");
	$("#listeCDParametresEtape").empty();
	$("#listeCDParametresEtape").select2("val", "");
	$("#descripSelectCDParametreEtapeInput").val("");
	$("#valeurFixeSelectCDParametreEtapeInput").val("");
};

/** Evénement lorsqu'on complète l'input de cd paramètre étape **/
$("#CDParametreEtapeInput").keypress(function(){
	cleanAjout("CDParametreEtape");
});

/** Evénement lorsqu'on complète l'input de description du cd paramètre étape **/
$("#CDParametreEtapeDescriptionInput").keypress(function(){
	cleanAjoutWarning("CDParametreEtapeDescription");
});

/** Evénement lorsqu'on complète l'input de valeur du cd paramètre étape **/
$("#CDParametreEtapeValeurFixeInput").keypress(function(){
	cleanAjout("CDParametreEtapeValeurFixe");
});

/** Evénement lorsqu'on clique sur une option du bouton radio de cd paramètre étape **/
$('input[type=radio][name=choixTypeSaisieParametreEtape]').on("click", function(){
	cleanAjout("CDParametreEtapeTypeSaisie");
});

/** Evénement lorsqu'on clique sur l'option "Administrateur" du bouton radio de cd paramètre étape **/
$('input[type=radio][name=choixTypeSaisieParametreEtape][value=Administrateur').on("click", function(){
	$("#divValeurFixeCDParametreEtape").removeClass("hidden");
});

/** Evénement lorsqu'on clique sur l'option "Utilisateur" du bouton radio de cd paramètre étape **/
$('input[type=radio][name=choixTypeSaisieParametreEtape][value=Utilisateur').on("click", function(){
	$("#divValeurFixeCDParametreEtape").addClass("hidden");
});

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau CDParametreEtape à la liste des CDParametresEtape **/
$("#ajouterCDParametreEtapeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCDParametreEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			CDParametreEtape : $("#CDParametreEtapeInput").val(),
			typeSaisieCDParametreEtape : $('input[type=radio][name=choixTypeSaisieParametreEtape]:checked').val(),
			descriptionCDParametreEtape : $("#CDParametreEtapeDescriptionInput").val(),
			valeurFixeCDParametreEtape : $("#CDParametreEtapeValeurFixeInput").val()
		},
		success : function(response) {
			if (response.erreur || response.erreur3 || response.erreur4) {
				if (response.erreur){
					erreurAjout("CDParametreEtape", response.erreur);
				}
				if (response.erreur2) {
					warningAjout("CDParametreEtapeDescription", response.erreur2);
				}
				if (response.erreur3) {
					erreurAjout("CDParametreEtapeTypeSaisie", response.erreur3);
				}
				if (response.erreur4) {
					erreurAjout("CDParametreEtapeValeurFixe", response.erreur4);
				}
			}
			else {
				$("#listeCDParametresEtape").append('<option value='+response.idCDParametreEtape+'>'+$("#CDParametreEtapeInput").val()+'</option>');
				$("#CDParametreEtapeInput").val("");
				$('input[type=radio][name=choixTypeSaisieParametreEtape]').attr('checked', false);
				$("#CDParametreEtapeDescriptionInput").val("");
				$("#CDParametreEtapeValeurFixeInput").val("");
				$("#divValeurFixeCDParametreEtape").addClass("hidden");
				cleanCorrespondancesParametres();
			}
		},
		error : function(){
			erreurAjout("CDParametreEtape", properties_error_CDParametreEtape.innerHTML);
			$("#CDParametreEtapeInput").val("");
			$("#CDParametreEtapeDescriptionInput").val("");
		}
	});
	return false;
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCDParametreEtape .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCDParametreEtapeForm.action",
		data : {
			idCDParametreEtape : $("#listeCDParametresEtape").val(),
			idCDEtape : $("#listeCDEtapes").val()
		},
		success : function() {
			cleanCDParametresEtape();
			recupererCDParametresEtape();
			recupererTousCDParametresEtape();
			cleanCorrespondancesParametres();
		}
	});
	$('#modalCDParametreEtape').modal('hide');
});

/** Evénement appelé lors du clic sur le bouton supprimer définitivement du modal **/
$('#modalCDParametreEtape .suppr-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerDefinitivementCDParametreEtapeForm.action",
		data : {
			idCDParametreEtape : $("#listeCDParametresEtape").val()
		},
		success : function() {
			cleanCDParametresEtape();
			recupererCDParametresEtape();
			recupererTousCDParametresEtape();
			cleanCorrespondancesParametres();
		}
	});
	$('#modalCDParametreEtape').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer le CdParametreEtape sélectionnée à la liste des CDParametresEtape **/
$("#supprimerCDParametreEtapeForm").submit(function(){
	if (!$("#listeCDParametresEtape").val() == ""){
		$("#modalCDParametreEtape").modal('show');
	}
	else {
		erreurSuppression("CDParametreEtape", properties_error_suppr_CDParametreEtape.innerHTML);
	}
	return false;
});

/** Evénement lorsqu'on valide le formulaire de modification du cd paramètre étape **/
$("#modifierCDParametreEtapeForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "modifierCDParametreEtapeForm.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			idCDParametreEtape : $("#listeCDParametresEtape").val(),
			descriptionCDParametreEtape : $("#descripSelectCDParametreEtapeInput").val(),
			valeurFixeCDParametreEtape : $("#valeurFixeSelectCDParametreEtapeInput").val()
		},
		success : function(response) {
			if (response.erreur2){
				if (response.erreur){
					warningAjout("CDParametreEtapeModifDescription", response.erreur);
				}	
				if (response.erreur2){
					erreurAjout("CDParametreEtapeModifValeurFixe", response.erreur2);
				}		
			}
			else {
				cleanAjoutWarning("CDParametreEtapeModifDescription");
			}
		},
	});
	return false;
});

/** Evénement lorsqu'on complète l'input de modification de description du cd paramètre étape **/
$("#descripSelectCDParametreEtapeInput").keypress(function(){
	cleanAjoutWarning("CDParametreEtapeModifDescription");
});

/** Evénement lorsqu'on complète l'input de modification de valeur du cd paramètre étape **/
$("#valeurFixeSelectCDParametreEtapeInput").keypress(function(){
	cleanAjout("CDParametreEtapeModifValeurFixe");
});

/** Fonction qui permet de récupérer la description et le type de saisie d'une CDParametreEtape**/
recupererCDParametreEtape = function(){
	$.ajax({
		type : "POST",
		url : "recupererCDParametreEtape.action",
		data : {
			idCDEtape : $("#listeCDEtapes").val(),
			idCDParametreEtape : $("#listeCDParametresEtape").val()
		},
		success : function(response) {
			$("#descripSelectCDParametreEtapeInput").val(response.descriptionCDParametreEtape);
			$("#valeurFixeSelectCDParametreEtapeInput").val(response.valeurFixeCDParametreEtape);
			if (response.typeSaisieCDParametreEtape == "admin"){
				$("#divModifValeurFixeCDParametreEtape").removeClass("hidden");
			}
			else {
				if (!$("#divModifValeurFixeCDParametreEtape").hasClass("hidden")){
					$("#divModifValeurFixeCDParametreEtape").addClass("hidden");
				}
				$("#valeurFixeSelectCDParametreEtapeInput").val("null");
			}
		},
	});
	return false;
};

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres étape **/
$("#listeCDParametresEtape").on("change", function(){
	cleanAjoutWarning("CDParametreEtapeModifDescription");
	cleanSuppression("CDParametreEtape");
	recupererCDParametreEtape();
	$("#modifierCDParametreEtapeForm").removeClass("hidden");
});




/** CorrespondanceParamètres **/

/** Fonction permettant de vider la liste contenant les étapes **/
cleanCorrespondancesParametres = function(){
	cleanAjout("CorrespondanceParametresDemande");
	cleanAjout("CorrespondanceParametresEtape");
	cleanSuppression("CorrespondanceParametres");
	$("#toutesCorrespondancesParametresDemande").empty();
	$("#toutesCorrespondancesParametresDemande").select2("val", "");
	$("#toutesCorrespondancesParametresEtape").empty();
	$("#toutesCorrespondancesParametresEtape").select2("val", "");
	$("#listeCorrespondancesParametres").empty();
	$("#listeCorrespondancesParametres").select2("val", "");
	recupererToutesCorrespondancesParametresDemande();
	recupererToutesCorrespondancesParametresEtape();
	recupererCorrespondancesParametres();
};

/** Fonction déclenchée par le bouton ajouter. Elle permet d'ajouter un nouveau CDParametreDemande et un CDParametreEtape à une nouvelle CorrespondanceParametres **/
$("#ajouterCorrespondanceParametresForm").submit(function(){
	$.ajax({
		type : "POST",
		url : "ajouterCorrespondanceParametresForm.action",
		data : {
			corpardem : $("#toutesCorrespondancesParametresDemande").val(),
			corparet : $("#toutesCorrespondancesParametresEtape").val()
		},
		success : function(response) {
			if (response.erreur || response.erreur2) {
				if (response.erreur){
					erreurAjout("CorrespondanceParametresDemande", response.erreur);
				}
				if (response.erreur2) {
					erreurAjout("CorrespondanceParametresEtape", response.erreur2);
				}
			}
			else {
				cleanCorrespondancesParametres();		
			}
		}
	});
	return false;
});

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres demandes existants **/
$("#toutesCorrespondancesParametresDemande").on("change", function(){
	cleanAjout("CorrespondanceParametresDemande");
});

/** Evénement lorsqu'on change la sélection de la liste des cd paramètres étapes existants **/
$("#toutesCorrespondancesParametresEtape").on("change", function(){
	cleanAjout("CorrespondanceParametresEtape");
});

/** Fonction qui permet de récupérer tous les CDParametresDemande qui ne sont pas encore affectés à une correspondance **/
recupererToutesCorrespondancesParametresDemande = function(){
	$.ajax({
		type : "POST",
		url : "recupererToutesCorrespondancesParametresDemande.action",
		data : {idCDDemande : $("#listeCDDemandes").val()},		
		success : function(response) {
			$("#toutesCorrespondancesParametresDemande").append('<option value=""/>');
			$.map( response.mapCorrespondancesParametresDemande, function(val, id) {
				$("#toutesCorrespondancesParametresDemande").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet de récupérer tous les CDParametresEtape qui ne sont pas encore affectés à une correspondance **/
recupererToutesCorrespondancesParametresEtape = function(){
	$.ajax({
		type : "POST",
		url : "recupererToutesCorrespondancesParametresEtape.action",
		data : {idCDEtape : $("#listeCDEtapes").val()},
		success : function(response) {
			$("#toutesCorrespondancesParametresEtape").append('<option value=""/>');
			$.map( response.mapCorrespondancesParametresEtape, function(val, id) {
				$("#toutesCorrespondancesParametresEtape").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Fonction qui permet de récupérer lesCorrespondancesParametres de la base de données **/
recupererCorrespondancesParametres = function(){
	$.ajax({
		type : "POST",
		url : "recupererCorrespondancesParametres.action",
		data : {
			idCDDemande : $("#listeCDDemandes").val(),
			idCDEtape : $("#listeCDEtapes").val()
		},
		success : function(response) {
			$("#listeCorrespondancesParametres").append('<option value=""/>');
			$.map( response.mapCorrespondancesParametres, function(val, id) {
				$("#listeCorrespondancesParametres").append('<option value='+ id +'>'+ val +'</option>');
			});
		},
	});
	return false;
};

/** Evénement lorsqu'on change la sélection de la liste des correspondances paramètres **/
$("#listeCorrespondancesParametres").on("change", function(){
	cleanSuppression("CorrespondanceParametres");
});

/** Evénement appelé lors du clic sur le bouton valider du modal **/
$('#modalCorrespondanceParametres .okay-button').click(function(){
	$.ajax({
		type : "POST",
		url : "supprimerCorrespondanceParametresForm.action",
		data : {
			idCorrespondanceParametres : $("#listeCorrespondancesParametres").val()
		},
		success : function() {
			cleanCorrespondancesParametres();
		}
	});
	$('#modalCorrespondanceParametres').modal('hide');
});

/** Fonction déclenchée par le bouton de suppression. Elle permet de supprimer la CorrespondanceParametres sélectionnée à la liste des CorrespondancesParametres **/
$("#supprimerCorrespondanceParametresForm").submit(function(){
	if (!$("#listeCorrespondancesParametres").val() == ""){
		$("#modalCorrespondanceParametres").modal('show');
	}
	else {
		erreurSuppression("CorrespondanceParametres", properties_error_suppr_CorrespondanceParametres.innerHTML);
	}
	return false;
});

